Field
The present disclosure relates generally to communication systems, and more particularly, to adjusting a receive window and acknowledgment to mitigate unwanted data segment retransmissions sent via the Transmission Control Protocol (TCP).
Background
The Transmission Control Protocol (TCP) is a reliable data transport protocol widely used across communications networks. TCP provides a robust congestion control algorithm to share bandwidth between current TCP sessions. The congestion control algorithm avoids problems related to network congestion by automatically scaling back a data transfer to match an available bandwidth capacity. Multiple concurrent and reliable data transfers across a shared network link may result in high congestion if each of the data transfer sessions tries to fully utilize the link capacity. The high congestion may result in high packet loss, which in turn may cause a large number of packet retransmissions, ultimately resulting in network collapse. TCP's congestion control algorithm avoids this problem by automatically determining how much bandwidth is available and sharing the total available bandwidth equally with other concurrent TCP sessions.
TCP utilizes various internal algorithms to provide congestion control capability. These algorithms include flow control, slow start, packet reordering, packet loss detection, retransmission timers, and numerous other mechanisms to dynamically decrease or increase the data transmission rate based on network conditions.
TCP's flow control algorithm is a mechanism to prevent a receiver from receiving more data than the receiver is capable of processing or buffering. For example, if a receiving TCP stack has a buffer to store 16 kilobytes of data, a sender is not allowed to transmit more than 16 kilobytes of data at any time to the receiver. The receiver continuously sends back acknowledgments to the sender throughout the data transfer stating how much additional data the receiver can accept. This additional data that the receiver can accept is known as the “window indication” (or “window advertisement”) and is included as a field in a TCP header.